package vip.xumy.admin.um.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import vip.xumy.admin.um.pojo.Menu;
import vip.xumy.admin.um.pojo.Permission;
import vip.xumy.core.pojo.com.Entry;

/**
 * 权限管理Dao
 * @author v_mengyxu	
 *
 */
public interface IPermissionMapper { 
	/**
	 * 增加记录
	 * @param permission 新增的记录
	 */
	public void insertOne(Permission permission);
	
	/**
	 * 批量添加
	 * @param permissions
	 */
	public void insertBatch(List<Permission> permissions);
	
	/**
	 * 更新记录
	 * @param permission 更新的记录
	 */
	public void updateByCode(Permission permission);
	
	/**
	 * 删除记录
	 * @param resCode 权限编码
	 */
	public void deleteByCode(String resCode);
	
	/**
	 * 删除全部
	 */
	public void deleteAll();
	
	/**
	 * 判断是否存在该记录
	 * @param resCode 权限编码
	 * @return
	 */
	public long isExist(String resCode);
	
	/**
	 * 根据权限内容查询权限信息
	 * @param resContent 权限内容
	 * @return
	 */
	public List<String> queryCodeByContent(String resContent);
	
	/**
	 * 判断用户是否拥有某权限
	 * @param userId 用户号
	 * @param resCode 权限编码
	 * @return
	 */
	public long havePermission(@Param("userId")String userId ,@Param("preCode")String resCode);
	
	/**
	 * 查询所有系统
	 * @param userId 
	 */
	public List<Entry<String, String>> queryAllModule(String userId);
	
	/**
	 * 用户个人菜单
	 * @param userId 
	 * @return
	 */
	public List<Menu> queryMenuTree(@Param("userId")String userId ,@Param("perParent")String perParent);
	
	/**
	 * 查询action权限
	 * @return
	 */
	public List<String> queryContentByParentContent(@Param("userId")String userId ,@Param("parentContent")String parentContent);
	
	/**
	 * 	查询权限树
	 * @param perParent
	 * @return
	 */
	public List<Permission> queryPermissionTree();
	
	/**
	 * 	查询权限树
	 * @param perParent
	 * @return
	 */
	public List<Permission> queryPublicPerTree();
	
}
